<?xml version='1.0' encoding='utf-8'?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Pro Git - 简体中文版
</title>
    <meta content="http://www.w3.org/1999/xhtml; charset=utf-8" http-equiv="Content-Type"/>
    <link href="stylesheet.css" type="text/css" rel="stylesheet"/>
    <style type="text/css">
		@page { margin-bottom: 5.000000pt; margin-top: 5.000000pt; }</style>
  </head>
  <body class="calibre">
<h2 id="calibre_toc_27" class="calibre3">分支管理</h2>

<p class="calibre2">到目前为止，你已经学会了如何创建、合并和删除分支。除此之外，我们还需要学习如何管理分支，在日后的常规工作中会经常用到下面介绍的管理命令。</p>

<p class="calibre2"><code class="calibre9">git branch</code> 命令不仅仅能创建和删除分支，如果不加任何参数，它会给出当前所有分支的清单：</p>

<pre class="calibre8"><code class="calibre9">$ git branch
  iss53
* master
  testing
</code></pre>

<p class="calibre2">注意看 <code class="calibre9">master</code> 分支前的 <code class="calibre9">*</code> 字符：它表示当前所在的分支。也就是说，如果现在提交更新，<code class="calibre9">master</code> 分支将随着开发进度前移。若要查看各个分支最后一次 commit 信息，运行 <code class="calibre9">git branch -v</code>：</p>

<pre class="calibre8"><code class="calibre9">$ git branch -v
  iss53   93b412c fix javascript issue
* master  7a98805 Merge branch 'iss53'
  testing 782fd34 add scott to the author list in the readmes
</code></pre>

<p class="calibre2">要从该清单中筛选出你已经（或尚未）与当前分支合并的分支，可以用 <code class="calibre9">--merge</code> 和 <code class="calibre9">--no-merged</code> 选项（Git 1.5.6 以上版本）。比如 <code class="calibre9">git branch -merge</code> 查看哪些分支已被并入当前分支：</p>

<pre class="calibre8"><code class="calibre9">$ git branch --merged
  iss53
* master
</code></pre>

<p class="calibre2">之前我们已经合并了 <code class="calibre9">iss53</code>，所以在这里会看到它。一般来说，列表中没有 <code class="calibre9">*</code> 的分支通常都可以用 <code class="calibre9">git branch -d</code> 来删掉。原因很简单，既然已经把它们所包含的工作整合到了其他分支，删掉也不会损失什么。</p>

<p class="calibre2">另外可以用 <code class="calibre9">git branch --no-merged</code> 查看尚未合并的工作：</p>

<pre class="calibre8"><code class="calibre9">$ git branch --no-merged
  testing
</code></pre>

<p class="calibre2">我们会看到其余还未合并的分支。因为其中还包含未合并的工作，用 <code class="calibre9">git branch -d</code> 删除该分支会导致失败：</p>

<pre class="calibre8"><code class="calibre9">$ git branch -d testing
error: The branch 'testing' is not an ancestor of your current HEAD.
</code></pre>

<p class="calibre2">不过，如果你坚信你要删除它，可以用大写的删除选项 <code class="calibre9">-D</code> 强制执行，例如 <code class="calibre9">git branch -D testing</code>。</p>

</body>
</html>
